前言

交换机(二层交换机):工作在数据链路层(第二层),根据目标MAC地址来转发数据帧。它可以通过学习源MAC地址和物理接口之间的映射关系,建立转发表,从而实现数据帧的快速转发。

这一部分的内容已经在上期的科普篇里有所介绍了,这边不再进行说明讲解。

随着技术的发展,交换机也拓展出了基于网络层(第三层)的功能。为了区分,通常会称为三层交换机。

三层交换机有了网络层的功能,就可以作为网关实现跨网段的转发通信行,甚至分配动态ip。

另外,交换机还有傻瓜交换机与可网管交换机之分:

傻瓜交换机 —— 特指无法进行配置,插上即可使用。

网管交换机 —— 也称企业级交换机,特指可以进行命令配置的交换机。

注:网管交换机并不都是三层交换机,二层交换机一样也有网管级的。

本篇主要是围绕着vlan(虚拟局域网)进行讲解介绍。 先从vlan技术(二层交换机)开始讲解一步步拓展到vlanif技术(三层交换机)。
内容的介绍会涉及到命令的配置,使用的是华为的ensp模拟器来进行模拟配置。

VLAN概述

什么是VLAN

VLAN(Virtual Local Area Network)即虚拟局域网,是一种逻辑上的网络分割技术,用于将物理上的局域网(LAN)划分成多个虚拟的子网(多个广播域)

通过使用VLAN,可以将不同的设备或用户组织到不同的逻辑网络中,即使它们物理上连接的是同一个交换机上。(不同交换机也可组织到同一个VLAN)

每个VLAN是一个广播域,VLAN内的主机间可以直接通信,而VLAN间则不能直接互通。(一方面是隔离广播域后无法使用ARP查找设备mac地址,另一方面是协议规定了设备遇到不同VLAN的数据帧就丢弃)

此外,VLAN还可以简化网络管理,因为管理员可以根据需要对每个VLAN进行配置和管理,而无需干扰其他VLAN。

VLAN是基于交换机的,交换机通过将数据帧打上VLAN标签来识别不同的VLAN。这些标签可以基于端口、MAC地址或其他标识符进行配置。

当数据帧在交换机之间传输时,交换机会根据VLAN标签将数据帧转发到正确的VLAN中的目标设备

总之,VLAN是一种用于划分局域网的技术,可以提供更好的网络管理、性能和安全性。

为什么需要VLAN

在二层网络中,一台主机发送一个广播数据帧,网络中所有主机都会收到,网络中的每一条链路都至少传输了一次广播包。我们把这样的转发接收广播数据帧的区域叫做广播域。

广播域范围过大,其中的广播数据会存在过多,占用太多带宽(网络资源),影响网络性能。

在此之前,我们采用的方案是划分网段,使网络设备分处于不同的局域网(LAN),再由路由器来隔离广播域。广播包就被限定在每一个局域网内,不会影响到处于其他局域网的设备。

而VLAN,即虚拟局域网,这种技术不需要修改设备的ip地址与网段,直接在二层网络中不涉及网络层的情况下就能虚拟出局域网,完成广播域的隔离。

还有一个更主要的原因是原先使用网段划分,需要使用大量的路由器。如果依旧采用单台路由器配合多台交换机的方案,那还是无法隔离

这是因为交换机只解封装到二层,发现数据帧报头的广播地址,便会从交换机的所有接口转发出去,不会去区分网段是否一致。

图1——前言拓扑

例如以上拓扑图,PC1是10网段,PC2也是10网段,但PC3是30网段。

PC1要与PC2通信,因为没有PC2的mac地址,于是发送了ARP广播来询问PC2的mac地址。

我们可能会觉得只是去查PC2的10.0.0.2这个ip对应的mac地址是多少,那么不会找到处于30网段的PC3去。

但只要去抓包,就能知道交换机2会将ARP包也转发给PC3跟路由器。

引入vlan这种二层技术,只需要交换机就可以完成广播域的隔离了。

图2——vlan作用

VLAN技术带来的问题

VLAN技术,可以在数据链路层的层面进行隔绝广播域,这非常好的解决了广播泛滥带来的性能显著下降甚至造成网络不可用等问题。但也正因为隔绝了广播域,它带来了新的问题。

广播包无法发送到其他vlan下的设备,意味着ARP包也无法跨vlan传播,这就导致无法获取其他vlan下设备的mac地址,进而导致不同vlan之间无法进行通信。**[ 但实际上即便知道了mac地址并手动绑定进ARP表中,也无法跨vlan通信;交换机不仅隔绝了广播包,不同vlan之间的单播包也会被拦截。]**

不过,也有很多人将这一问题视为vlan的优点,认为这增加了网络的安全性

想要解决这个问题,一个是逻辑上使vlan失效(后面就会介绍的标签管理);

另一个方法就是通过三层设备的路由功能来实现,也就是使用网关,并为每一个vlan划定好网段;网关可以使用路由器,也可以使用三层交换机(开启vlanif)。

这一部分内容稍后会详细介绍,接下来我们讲一讲VLAN的原理与配置。

VLAN的原理

IEEE于1999年颁布了用于标准化VLAN实现方案的802.1Q协议标准草案,该标准定义了VLAN的数据帧结构。

在传统的以太网数据帧基础上(源MAC地址字段和协议类型字段之间)增加4个字节的802.1Q Tag。

TPID(Tag Protocol Identifier):TPID是VLAN标签的第一个字段,占据2个字节。它用于标识VLAN标签的存在,并指示后续字段的解释方式。对于以太网中的VLAN标签,TPID的值通常为0x8100。

PRI(Priority Code Point):PRI字段是VLAN标签的第二个字段,占据3个比特位。PRI字段用于指示数据帧的优先级,用于实现QoS(Quality of Service,服务质量)功能。PRI字段的值范围从0到7,值越大优先级越高。当网络阻塞时,交换机优先发送优先级高的数据帧。

CFI(Canonical Format Identifier):CFI字段是VLAN标签的第三个字段,占据1个比特位。CFI字段用于指示MAC地址是否采用规范格式。当CFI字段的值为0时,表示MAC地址采用规范格式;当CFI字段的值为1时,表示MAC地址采用非规范格式。

VID(VLAN Identifier):VID字段是VLAN标签的最后一个字段,占据12个比特位。VID字段用于标识数据帧所属的VLAN。每个VLAN都有一个唯一的VLAN ID,可以支持最多4096个不同的VLAN。通过VID字段,交换机可以根据VLAN ID来识别并转发数据帧到相应的VLAN。(协议规定了VLAN0与VLAN4095作为保留,因此真正可使用的为4094个)

图3——vlan标签

请记住一点:VLAN是在交换设备上的技术,网络终端(PC)是不会发送与接收带有VLAN的数据帧。

人为的在交换机上配置VLAN的划分规则后,PC发送过来的数据帧在经过交换机时,就会被交换机添加上VLAN标签。

交换机根据vlan标签来确定数据帧的发送范围,而当下一跳就为目的终端时,交换机会先将vlan标签剥离再发送。

图4——vlan标签的作用

打标签与剥离标签是vlan技术的重点内容。为了更好更方便的管理vlan标签,就引入了接口类型的概念。

实际上vlan的实现方式有好几种,但目前广泛采用的都是基于接口的方式

简单说一下其他方式吧:【以下方式不被广泛采用都是因为配置繁琐、后期维护与拓展不易或有较大的漏洞(比如mac地址可被人为修改)】

基于MAC地址划分:根据数据帧的源MAC地址来划分VLAN。

网络管理员预先配置MAC地址和VLAN ID映射关系表,当交换机收到的是传统数据帧时,就依据该表给数据帧添加指定VLAN的标签,然后数据帧将在指定VLAN中传输。

基于IP子网划分:根据数据帧中的源IP地址和子网掩码来划分VLAN。

网络管理员预先配置IP地址和VLAN ID映射关系表,当交换机收到的是传统数据帧,就依据该表给数据帧添加指定VLAN的标签,然后数据帧将在指定VLAN中传输。

基于协议划分:根据数据帧所属的协议(族)类型及封装格式来划分VLAN。

网络管理员预先配置以太网帧中的协议域和VLAN ID的映射关系表,如果收到的是传统数据帧,就依据该表给数据帧添加指定VLAN的标签,然后数据帧将在指定VLAN中传输。

基于策略划分:根据配置的策略划分VLAN,能实现多种组合的划分方式,包括接口、MAC地址、IP地址等。

网络管理员预先配置策略,如果收到的是传统数据帧,且匹配配置的策略时,给数据帧添加指定VLAN的标签,然后数据帧将在指定VLAN中传输。


在一个VLAN交换网络中,以太网数据帧主要有以下两种形式:

  • 无标签帧(Untagged帧):原始的、未加入4字节VLAN标签的传统数据帧。
  • 有标签帧(Tagged帧):加入了4字节VLAN标签的帧。

VLAN的接口类型和VLAN标签的处理机制

交换机内部处理的数据帧一律都带有VLAN标签,而现网中交换机连接的设备有些只会收发传统数据帧,要与这些设备交互,就需要接口能够识别传统数据帧并在收发时给帧添加/剥除VLAN标签。

同时,现网中属于同一个VLAN的用户可能会被连接在不同的交换机上,且跨越交换机的VLAN可能不止一个。

如果需要用户间的互通,就需要交换机与交换机之间的接口能够同时识别和发送多个VLAN的数据帧。

根据接口连接对象以及对收发数据帧处理的不同,当前有VLAN的多种接口类型,以适应不同的连接和组网。

不同厂商对VLAN接口类型的定义可能不同。常见的VLAN接口类型有两种:Access和Trunk。

对于华为设备来说,还有第三种接口类型:Hybrid(一般不使用Hybrid)

接口类型是在交换机上配置的,不同接口类型有不同的机制,接下来就学习一下这三种接口类型。

默认VLAN/缺省VLAN

在计算机术语中,“缺省”二字表示默认的意思。因为它听起来总是不那么适应,所以本文都会称为默认。

默认VLAN代指PVID(Port Default VLAN ID)。

前面提到,交换机处理的数据帧都带Tag,当交换机收到Untagged帧(不带标签的传统数据帧)时,就需要给该帧添加Tag,添加什么Tag,就由接口上的默认VLAN决定。它的具体作用是:

  • 当接口接收数据帧时:如果接口收到一个Untagged帧,交换机会根据PVID给此数据帧添加等于PVID的Tag,然后再交给交换机内部处理;如果接口收到一个Tagged帧,交换机则不会再给该帧添加接口上PVID对应的Tag。
  • 当接口发送数据帧时:如果发现此数据帧的Tag的VID值与PVID相同,则交换机会将Tag去掉,然后再从此接口发送出去。

每个接口都有一个默认VLAN。默认情况下,所有接口的默认VLAN均为VLAN1,但用户可以根据需要进行配置:

  • 对于Access接口,默认VLAN就是它允许通过的VLAN,修改接口允许通过的VLAN即可更改接口的默认VLAN。
  • 对于Trunk接口和Hybrid接口,其接口可以允许多个VLAN通过,修改接口允许通过的VLAN不会更改接口的默认VLAN,修改默认VLAN需要使用专门的命令。

重点

对一台交换机来说,接口都是独立,不止是交换机外部表现为独立,在交换机内部也是独立的。

后面介绍接口类型时,请一定不要将交换机当作一个整体。

交换机的配置都是基于接口的,每一个接口都可以进行独立的配置。

所以一个数据帧进入交换机的接口时就开始进行处理,当处理完的数据帧,在交换机内部被移交到另一个接口时,会根据那一个接口的配置再进行一次处理

理解了这一点之后,后面对接口类型的学习就会很清晰了。

Access接口

Access接口一般用于和不能识别Tag的用户终端(如PC、服务器)相连,或者不需要区分不同VLAN成员时使用。

Access接口大部分情况只能收发Untagged帧

交换机内部只处理Tagged帧,所以Access接口需要给收到的数据帧添加VLAN标签,也就必须配置一个默认的VLAN。

配置默认VLAN后,该Access接口也就加入了该VLAN,收到不带标签的数据帧就会打上该默认VLAN的标签。

如果Access接口收到带有Tag的帧,并且帧中VID与PVID(默认vlan)相同时,Access接口就接收并处理该帧。

数据帧中的vlan标签内部的VID(vlan id)等于接口PVID,那就说明这是萝卜回萝卜坑了。

都是同属于一个vlan,自然就可以正常接收该数据帧

如果ID不同,即不是同一vlan的数据帧,就会丢弃。

此外,当交换设备在发送带有Tag的帧前,Access接口会剥离Tag。

因为access接口在设定上是与无法识别带vlan标签的终端连接的。

因此,当一个带标签数据帧的目标链路是access接口所在的链路,那么交换机在发送数据帧时会将标签剔除。

图5——access接口标签处理

Trunk接口

Trunk接口一般用于连接交换机、路由器、AP。

它可以允许多个VLAN的帧带Tag通过,但只允许属于默认VLAN的帧从该类接口上发出时不带Tag(即剥离标签)。

说白了,就是与access接口互补,access接口是用于连接不能识别标签的终端;trunk接口就是用于可以识别标签的设备。

因此trunk接口可以收发多个vlan的数据帧,只需要配置了允许哪些vlan标签的数据帧通过即可。

至于剥离标签的机制,大部分不剥离,只有跟PVID一致的vlan标签才剥离。

Trunk接口上的默认VLAN,有的厂商也将它定义为native VLAN。

当Trunk接口收到Untagged帧时,会为Untagged帧打上Native VLAN对应的Tag。

图6——trunk接口标签处理

Hybrid接口

Hybrid接口既可以用于连接不能识别Tag的用户终端(如用户主机、服务器)和网络设备(如Hub),也可以用于连接交换机、路由器、AP。

它不仅可以允许多个VLAN的帧带Tag通过(等同于trunk),还可以把从该接口发出的帧根据需要,设定某些VLAN的帧不带Tag(即剥除Tag)。

接收原理与trunk一样,而发送时,可以根据预先配置来判断是否剥离vlan标签。

Hybrid接口和Trunk接口在很多应用场景下可以通用,但在某些应用场景下,必须使用Hybrid接口。

比如在灵活QinQ中,服务提供商网络的多个VLAN的报文在进入用户网络前,需要剥离外层VLAN Tag。

此时Trunk接口不能实现该功能,因为Trunk接口只能使该接口默认VLAN的报文不带VLAN Tag通过。

Hybrid接口可以自由的使用命令来让交换机对什么vlan标签直接转发,对什么vlan标签进行剥离,有很大的操作空间。

但一般来说不会去使用它,只有当access与trunk都无法满足需求,且设备与链路还有vlan必须这样配置时,才会采用Hybrid接口。

这是因为现网中,很少全部采用同一品牌的设备,而Hybrid接口目前是华为设备使用的技术。更进一步的说,就是Hybrid接口还未被广大的基层网络工程师学习接受。

接口类型的命令配置

以上是三种接口类型的原理描述。接下来介绍一下配置命令,后面就使用命令来完成一个简易的拓扑配置。

加粗的为固定的命令语法,斜体是自行修改的变量,具体用法可以参照后面的拓扑配置。

创建vlan

首先需要在交换机内部创建好vlan,注意每一台交换机都需要配置vlan

  1. 执行命令system-view,进入系统视图。
  2. 执行命令vlan vlan-id,创建VLAN并进入VLAN视图。如果VLAN已经创建,则直接进入VLAN视图。
    • 如果需要批量创建,执行命令vlan bath vlan-id1 vlan-id2 ,命令后可创建多个vlan。每个vlan-id之间用空格隔开。
    • 如果批量创建的vlan是递增的,可执行命令vlan batch vlan-id1 to vlan-idn ,比如创建2到10,就vlan bath 2 to 10
  3. 执行命令quit,返回系统视图。

配置access接口

  1. 执行命令interface interface-type interface-number,进入需要加入VLAN的以太网接口视图。
  2. 执行命令port link-type access,配置接口类型为access。
  3. 执行命令port default vlan vlan-id,配置接口的默认VLAN并将接口加入到指定VLAN。
  4. (可选)执行命令port discard tagged-packet,配置接口丢弃入方向带VLAN 标签的数据帧,即不接收带标签的数据帧。

如果要批量的配置access接口,可以在vlan视图下直接添加接口。

  1. 执行命令vlan vlan-id,进入VLAN视图。
  2. 执行命令port interface-type interface-number ,添加接口到vlan(以access的类型)

该命令指定的接口数量也可以使用批量方式,接口号之间空格隔开或是使用“to”指定范围。

配置trunk接口

  1. 执行命令interface interface-type interface-number,进入需要加入VLAN的以太网接口视图。
  2. 执行命令port link-type trunk,配置接口类型为trunk。
  3. 执行命令port trunk allow-pass vlan vlan-id,配置放行通过的vlan。
    • 批量添加也是可以多个vlan-id之间用空格隔开,或者使用“to”指代连续递增的vlan-id。
    • 另外可以使用port trunk allow-pass vlan all,表示放行所有vlan。
  4. (可选)执行命令port trunk pvid vlan vlan-id,配置Trunk接口的默认VLAN。
    • 需要剥离标签的情景下使用,发送数据帧是会剥离与该pvid相同的vlan标签。

配置hybrid接口

  1. 执行命令port link-type hybrid,配置接口类型为hybrid。

  2. 根据实际需要选择任一方式将接口加入VLAN(批量添加的方式与trunk接口一样):

    执行命令port hybrid tagged vlan vlan-id,配置指定vlan携带标签。(相当于放行vlan,等同于Trunk接口下的‘port trunk allow-pass vlan vlan-id’。)

    执行命令port hybrid untagged vlan vlan-id ,配置指定vlan不带标签。(相当于放行vlan的同时剥离标签。注意:只在出接口,也就是发送数据帧时才剥离标签。

  3. (可选)执行命令port hybrid pvid vlan vlan-id,配置Hybrid接口的默认VLAN。

批量添加方式

接口类型的配置是基于接口的,一般的网管交换机都是24口,一个一个配置很费事。

可以使用接口组,同时对多个接口进行相同的配置。配置不同的话,就还是得一个一个配。

使用port-group group-name 命令创建接口组,指定接口。再按一般的接口类型配置命令进行配置。

1
2
3
4
5
<HUAWEI> system-view
[HUAWEI] port-group pg1
[HUAWEI-port-group-pg1] group-member gigabitethernet0/0/1 to gigabitethernet0/0/5
[HUAWEI-port-group-pg1] port link-type access
[HUAWEI-port-group-pg1] port default vlan 10

跨vlan通信

前面提到过,不同vlan之间无法互相通信,想要跨vlan通信有两种方法,一是使vlan”失效“,二是借助网关。

接下来就分开介绍这两种方法。

使用接口类型的配置

vlan间的通信隔离实际就是通过vlan标签完成的,那么只要让跨vlan时传递的数据帧不携带vlan标签,就可以实现跨vlan通信。

需要利用有三点:

  • access接口发送的数据帧不携带标签。
  • 接口要发送的数据帧携带的vlan标签id与该接口的默认vlan的id相同时就会剥离标签。
  • 采用hybrid接口来剥离与目标终端相连接口的数据帧标签。

基于access与trunk的配置

基于前两点就可以实现跨vlan通信了,以下就举一个拓扑案例。

图7——跨vlan通信拓扑1

三台交换机串联在一起,每台交换机底下有一台PC,其中交换机1与3下的PC划分为vlan10;交换机2下的PC划分为vlan20。

PC无法识别带标签的数据帧,那么交换机与PC之间的接口就必须采用access接口。同时已经划分好了vlan,所以该接口的配置命令就完全确定下来了。

三个交换机都使用以下的配置,只是在交换机2将vlan-id改为20;注意括号之后的加粗字符才是真正键入的命令。

system-view
[magiku]vlan 10
[magiku-vlan10]q
[magiku]interface g 0/0/1
[magiku-GigabitEthernet0/0/1]port link-type access
[magiku-GigabitEthernet0/0/1]port default vlan 10

因为涉及了多个vlan,所以交换机之间无法配置为access接口(access接口只能通行一个vlan),必须采用trunk接口。

同时该接口需要放行vlan10与20,剩下的就是默认vlan(pvid)的确定了。

现在让我们以交换机1为焦点,只有当标签为vlan10的数据帧才能转发给PC1,那么交换机1的trunk接口所接收到的数据帧就必须为vlan10。

这有两种方式:(可以往回翻,再重新看一下trunk接口处理标签的机制)

  • 一是交换机2发来的数据帧不带标签且交换机1的trunk接口默认vlan为10。
  • 二是交换机2发来的数据帧携带vlan10的标签

不过方式二其实无法做到,因为想发出vlan10的标签。

在该拓扑之下,只能是交换机2在1号口收到的数据帧,处理为vlan10的标签。

这就要将1号口改为vlan10,而这就不满足PC2设置为vlan20的要求了。

交换机2收到PC发过来的数据帧会打上vlan20的标签,想要在发送时剥离标签的话,就要将左侧的2号口默认vlan设置为20。

当不带标签的数据帧从交换机2到达交换机1,由于交换机1的2号口初始默认vlan为vlan1,所以会打上vlan1的标签,这就无法发送给PC1。

因此还要修改交换机1的2号口默认vlan为vlan10。

这正好也满足了PC1发送数据帧到达PC2的要求。

好的,按照以上两点去配置交换机1与交换机2后,PC1与PC2就可以互相通信了。

再按这个思路去配置交换机2与交换机3之间的接口,那么三台PC之间就能互相通信了。

其中,PC1与PC3虽然同属vlan10,但数据帧在接触到交换机2的接口时,会被打上20的标签,发出时根据默认vlan的配置,会剥离20标签。

图8——标签过程.png

在交换机之间抓包的话,都是无标签。标签的变动都是在交换机内部进行的,进入交换机时打上标签,离开交换机时剥离标签。

交换机1与交换机3的配置一样:

vlan batch 10 20

interface GigabitEthernet0/0/1
port link-type access
port default vlan 10

interface GigabitEthernet0/0/2
port link-type trunk
port trunk pvid vlan 10
port trunk allow-pass vlan 10 20

交换机2的配置:

vlan batch 10 20

interface GigabitEthernet0/0/1
port link-type access
port default vlan 20

interface GigabitEthernet0/0/2
port link-type trunk
port trunk pvid vlan 20
port trunk allow-pass vlan 10 20

interface GigabitEthernet0/0/3
port link-type trunk
port trunk pvid vlan 20
port trunk allow-pass vlan 10 20

小问题

基于access与trunk的配置来实现跨vlan通信有一个缺点。

那就是trunk接口只能配置一个默认vlan,所以只能剥离一个vlan标签

同时,如果在上一个交换机剥离了标签,那么到本交换机会被打上默认vlan标签。

具体点,我们把上面的拓扑修改以下,删除交换机3,将PC3连入交换机2。

因此,需要将3号口修改为access接口,配置为vlan10。

修改后,PC1与PC2依旧可以互相通信,但PC1与PC3就无法通信了(明明是同一个vlan)。

因为PC1发送的数据帧在交换机1剥离了标签,在交换机2的2号口打上了20的标签,因为vlan不同,所以交换机不会将数据帧从3号口发送出去。

同样的,PC2与PC3也因为vlan不同,在同交换机下,无法互相通信。

图9——拓扑修改

引入hybrid接口的配置

上面这种拓扑要求已经无法使用access接口与trunk接口来完成跨vlan通信了。

以交换机2为焦点,想让PC2与PC3通信,同时保持他们处于vlan20与vlan10。

那么只能是修改接口为hybrid,同时配置为剥离vlan10与20的标签,再分别配置其默认vlan。

注:更换接口类型的话,需要删除之前的配置命令(放行vlan与pvid的命令),在之前配置的命令前打上undo用空格隔开;如果报错了,就去掉命令后面的自定义变量参数(vlan-id)。

交换机2修改后的1号口与3号口配置

interface GigabitEthernet0/0/1
port hybrid pvid vlan 20
port hybrid untagged vlan 10 20

interface GigabitEthernet0/0/3
port hybrid pvid vlan 10
port hybrid untagged vlan 10 20

修改这两个接口的配置后,这三台PC就又可以互相通信了。

当然,也可以把其他的接口都修改为hybrid接口,有兴趣的话,建议自己尝试一下。

使用网关的方式

一般来说,在企业中会基于部门、职能或办公区划分子网,再同时划分vlan来隔绝广播域。(很多管理设备与方案都是基于ip地址的)

在这种情形下,不同网段的设备之间就可以借助网关实现跨vlan通信。

图10——路由跨vlan

这是本文一开始的拓扑图,在路由器的接口配置好IP地址,PC上的网关填写为路由器的ip地址。

再给交换机与路由器相连的接口配置好默认vlan,以保证发送无标签数据帧给路由器。

这样PC1与PC3就可以互相通信了(三层通信)。

不过这种方案不成熟,每一个vlan都需要占用一个路由器的物理接口。

成熟的采用路由器跨vlan通信的方案是单臂路由。

单臂路由

所谓的单臂路由就是只使用单条链路连接下行设备的路由器方案。(单线复用)

单臂路由是通过在物理接口上虚拟出多个逻辑子接口,再配置不同的命令在这些虚拟接口上。

配置方式:

  1. 执行命令interface interface-type interface-number.virtual-number ,创建并进入虚拟子接口视图
  2. 执行命令dot1q termination vid vlan-id ,将子接口与vlan进行关联,以处理该vlan的数据帧
  3. 执行命令ip address IP地址 子网掩码 ,为该子接口配置ip地址,作为该vlan的网关
  4. 执行命令arp broadcast enable ,使接口可以收发ARP广播包(旧型号的华为设备默认不开启该功能,不开启的话无法通信)

图11——单臂路由

之前的拓扑图就可以修改为这样。AR1路由器上虚拟出了两个接口,配置了两个不同的ip地址作为10网段与30网段的网关地址。

交换机2与路由器间的链路就按正常的trunk方式配置,放行vlan10与vlan30的数据帧。

interface GigabitEthernet0/0/4
port link-type trunk
port trunk allow-pass vlan 10 30

路由器的配置:

interface GigabitEthernet0/0/1.10
dot1q termination vid 10
ip address 10.0.0.254 255.0.0.0
arp broadcast enable

interface GigabitEthernet0/0/1.30
dot1q termination vid 30
ip address 30.0.0.254 255.0.0.0
arp broadcast enable

注:虚拟子接口的编号强烈建议设置为与vlan-id相同的,子接口可设置的编号范围与vlan-id的可设置范围都是一样的1-4095。

经过以上配置后,三台PC之间就可以互相通信了。(PC记得填写好子网掩码与网关地址)

同时,在路由器处抓包的话,可以看到数据帧的标签是来回切换的。

发过来的为10标签,经由路由器转发出去时就为30;反过来,收到30,发出去就为10。

三层交换机与vlanif技术

还记得我们一开始划分广播域的初衷吗——广播数据存在过多,会占用太多带宽(网络资源),影响网络性能。

使用单臂路由结合vlan技术,是完美做到了削减广播数据。

但是,进行跨vlan通信时,都需要跑到路由器上,并且还是单条链路进行收与发(一次双向通信,对上层链路的带宽占用是双倍的)。

以我们科普篇的一张企业拓扑图举例,明明只是与隔壁交换机下的一台主机互相通信,却要绕一大圈,这不仅降低效率,也占用了太多额外网络资源。

图12——单路复用

为了解决这一问题,就发展出了三层交换机,由三层交换机作为下行设备的网关,以缩小跨网段通信的“通勤”范围。

图13——三层交换

vlanif就是三层交换机上的技术,在交换机上虚拟出拥有路由功能的三层接口,并自动绑定vlan。

后期很多技术都是在该接口上配置(dns等)。

注意:

单臂路由的子接口是虚拟在真实物理接口之下的,对应的ip是绑定在物理接口的。更换一个物理接口的话,就无法访问到。

而vlanif接口是在交换机的内部虚拟出来的三层接口,并不是绑定在某一物理接口,是绑定在vlan上的,匹配到vlan,就能访问到。

如果在多个物理接口上配置同一个vlan,那么随便接一个接口都可以访问到这个vlanif接口。

配置方法:

  1. 提前创建好vlan
  2. 执行命令interface Vlanif vlan-id ,创建vlanif接口,注意id号必须为已创建的vlan。
  3. 执行命令 ip address IP地址 子网掩码 , 为vlanif接口绑定ip地址,作为其vlan-id的网关。

图14——vlanif

将上述单臂路由的拓扑中的路由器替换为三层交换机,拓扑中其他设备的配置不变。

只需要配置交换机3:

vlan batch 10 30

interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10 30

interface Vlanif10
ip address 10.0.0.254 255.0.0.0

interface Vlanif30
ip address 30.0.0.254 255.0.0.0

三台交换机之间就又可以互相通信了。

拓展

网络接口分二层接口与三层接口,路由器默认是三层接口,可以配置ip;交换机默认是二层接口,不可配置ip,只能配置vlan。

如果使用了vlanif接口作为下行设备的网关,那么就需要交换机的另一侧接口也拥有ip地址,才能做路由跳转

这有两种方案:

  1. 将交换机的接口通过命令配置修改为三层接口,然后配置ip(需要交换机支持切换)。
  2. 新建一个vlan,配置在该物理接口上,然后再创建一个vlanif接口并配置ip地址

第一个方案不常用,因为第二个方案更优;可以给多个物理口配置同一个vlan,使其都使用同一个ip地址;而三层物理口无法做到多个接口使用同一个ip地址。

多个物理口同ip的优势,一个是可以从每个接口独立分出,连接到傻瓜交换机或无线路由器/AP作为接口拓展;另一个是后期链路故障时,可以很快速的通过更换接口来恢复网络。(现网中,可以提前规划配置好交换机的某两个接口为直连路由器的;这一链路故障后,直接在机房更换到空闲的另一个接口即可。)

关于三层交换机与路由器的搭配,由于还未学习路由技术,本文暂不详细介绍,之后会通过一个实验来融合讲解。

另外,也许现网中会有一些特殊需要,导致一个接口要配置给多个vlan使用。(一个接口连接多个设备,这些设备还不属于同一个vlan。这种需求可能是这个接口后带了一个不可网管的傻瓜交换机,或者是采用了ip电话)

这种需求就无法再使用本文介绍的基于接口类型的vlan划分,需要采用基于子网或者基于mac地址的方式。

有关这部分的内容,请参考官方产品文档设置,或等以后其他内容更新完毕,空闲下来了我再来做。